function v = WholeTreeApply( ...
  RKTree, DiagBlock, u, N, nSample, nLevelCur, nDiagBlock )

v = RKTreeApply( RKTree, u, N, nLevelCur, nSample );
v = reshape(v, N*N, nSample);
w = reshape(u, N*N, nSample);
for i = 1 : nDiagBlock
  v(DiagBlock{i}.indSource,:) = v(DiagBlock{i}.indSource,:) + ...
    DiagBlock{i}.Mat * w(DiagBlock{i}.indTarget,:);
end

